from DB import DB

class DBAssert:
    # 初始化类
    def __init__(self, db):
        self.db = db  # 接收已连接的数据库实例

    #断言是否存在
    def assert_exists(self, sql, msg="数据不存在"):
        result = self.db.select(sql)
        # 若结果为空列表，则断言失败
        assert len(result) > 0, f"{msg},SQL语句为:{sql}"

    #断言数据是否不存在
    def assert_not_exists(self,sql,msg="数据不应存在"):
        result = self.db.select(sql)
        # 若结果为非空，则断言失败
        assert len(result) == 0, f"{msg},SQL语句为: {sql}"

    def assert_value_equal(self,sql,expected,index=0,msg="值不匹配"):
        result = self.db.select(sql)
        # 先确保有数据
        assert len(result) > 0, f"未查询到数据,SQL语句为: {sql}"
        # 取指定位置的第一条数据
        actual = result[index][0]  # 如：result[0][0] 取第一条数据的第一个字段值
        assert actual == expected,f"{msg} | 预期结果: {expected}, 实际结果: {actual},SQL语句为: {sql}"